/**
 * 机勘院DeepSeek系统 - 文件库页面JavaScript
 */

$(document).ready(function() {
    // 初始化文件页面
    initFilePage();
    
    // 绑定事件处理
    bindEvents();
});

/**
 * 初始化文件页面
 */
function initFilePage() {
    // 初始化提示框
    initTooltips();
    
    // 初始化文件列表
    loadFileList('all');
}

/**
 * 初始化工具提示
 */
function initTooltips() {
    const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
    tooltipTriggerList.map(function (tooltipTriggerEl) {
        return new bootstrap.Tooltip(tooltipTriggerEl);
    });
}

/**
 * 绑定事件处理
 */
function bindEvents() {
    // 文件类型过滤事件
    $('#file-type-filter').on('change', function() {
        const fileType = $(this).val();
        filterFilesByType(fileType);
    });
    
    // 文件上传按钮事件
    $('#uploadButton').on('click', function() {
        uploadFile();
    });
    
    // 文件操作按钮事件
    $('.btn-outline-primary').on('click', function() {
        // 查看文件
        const fileName = $(this).closest('tr').find('td:first').text().trim();
        viewFile(fileName);
    });
    
    $('.btn-outline-success').on('click', function() {
        // 下载文件
        const fileName = $(this).closest('tr').find('td:first').text().trim();
        downloadFile(fileName);
    });
    
    $('.btn-outline-danger').on('click', function() {
        // 删除文件
        const fileName = $(this).closest('tr').find('td:first').text().trim();
        deleteFile(fileName);
    });
    
    // 搜索按钮事件
    $('.input-group button').on('click', function() {
        const searchTerm = $('.input-group input').val().trim();
        searchFiles(searchTerm);
    });
    
    // 搜索输入框回车事件
    $('.input-group input').on('keypress', function(e) {
        if (e.which === 13) {
            const searchTerm = $(this).val().trim();
            searchFiles(searchTerm);
        }
    });
}

/**
 * 加载文件列表
 * @param {string} listType - 列表类型（all/recent/favorites）
 */
function loadFileList(listType) {
    // 在实际应用中，应该通过API获取文件列表
    console.log(`加载${listType}类型的文件列表`);
}

/**
 * 按类型过滤文件
 * @param {string} fileType - 文件类型
 */
function filterFilesByType(fileType) {
    console.log(`过滤文件类型: ${fileType}`);
    
    if (fileType === 'all') {
        // 显示所有文件
        $('tbody tr').show();
    } else {
        // 隐藏所有文件，然后只显示指定类型
        $('tbody tr').hide();
        
        switch (fileType) {
            case 'doc':
                $('tbody tr:has(.fa-file-word, .fa-file-pdf)').show();
                break;
            case 'image':
                $('tbody tr:has(.fa-file-image)').show();
                break;
            case 'data':
                $('tbody tr:has(.fa-file-excel)').show();
                break;
            case 'other':
                // 显示其他类型
                $('tbody tr:not(:has(.fa-file-word, .fa-file-pdf, .fa-file-image, .fa-file-excel))').show();
                break;
        }
    }
}

/**
 * 上传文件
 */
function uploadFile() {
    const fileInput = $('#fileUpload')[0];
    const fileCategory = $('#fileCategory').val();
    const fileDescription = $('#fileDescription').val();
    const addToKnowledgeBase = $('#addToKnowledgeBase').is(':checked');
    
    if (fileInput.files.length === 0) {
        alert('请选择要上传的文件');
        return;
    }
    
    // 模拟文件上传进度
    $('#uploadButton').prop('disabled', true).html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span> 上传中...');
    
    // 在实际应用中，这里应该调用API上传文件
    setTimeout(function() {
        // 上传完成
        $('#uploadButton').prop('disabled', false).text('上传');
        $('#uploadFileModal').modal('hide');
        
        // 清空表单
        $('#fileUpload').val('');
        $('#fileDescription').val('');
        $('#addToKnowledgeBase').prop('checked', false);
        
        // 显示成功消息
        showAlert('success', '文件上传成功！');
        
        // 刷新文件列表
        loadFileList('all');
    }, 1500);
}

/**
 * 查看文件
 * @param {string} fileName - 文件名
 */
function viewFile(fileName) {
    console.log(`查看文件: ${fileName}`);
    // 在实际应用中，这里应该打开文件预览页面或调用API获取文件内容
    showAlert('info', `正在查看文件: ${fileName}`);
}

/**
 * 下载文件
 * @param {string} fileName - 文件名
 */
function downloadFile(fileName) {
    console.log(`下载文件: ${fileName}`);
    // 在实际应用中，这里应该调用API下载文件
    showAlert('success', `文件 ${fileName} 开始下载`);
}

/**
 * 删除文件
 * @param {string} fileName - 文件名
 */
function deleteFile(fileName) {
    if (confirm(`确定要删除文件 "${fileName}" 吗？`)) {
        console.log(`删除文件: ${fileName}`);
        // 在实际应用中，这里应该调用API删除文件
        
        // 从表格中移除行
        $(`td:contains("${fileName}")`).closest('tr').fadeOut('slow', function() {
            $(this).remove();
        });
        
        showAlert('success', `文件 ${fileName} 已删除`);
    }
}

/**
 * 搜索文件
 * @param {string} searchTerm - 搜索关键词
 */
function searchFiles(searchTerm) {
    if (searchTerm === '') {
        // 显示所有文件
        $('tbody tr').show();
        return;
    }
    
    console.log(`搜索文件: ${searchTerm}`);
    
    // 隐藏所有行
    $('tbody tr').hide();
    
    // 显示匹配的行
    $(`tbody tr:contains("${searchTerm}")`).show();
    
    // 如果没有结果
    if ($('tbody tr:visible').length === 0) {
        showAlert('warning', `没有找到包含 "${searchTerm}" 的文件`);
    }
}

/**
 * 显示提示信息
 * @param {string} type - 提示类型（success/info/warning/danger）
 * @param {string} message - 提示消息
 */
function showAlert(type, message) {
    const alertHtml = `
        <div class="alert alert-${type} alert-dismissible fade show mt-3" role="alert">
            ${message}
            <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
        </div>
    `;
    
    // 添加提示到页面顶部
    $('.container-fluid').prepend(alertHtml);
    
    // 5秒后自动关闭
    setTimeout(function() {
        $('.alert').alert('close');
    }, 5000);
} 